package com.itheima.controller.v1;

import com.itheima.common.R;
import com.itheima.common.Series;
import com.itheima.controller.v1.api.StatisticsControllerApi;
import com.itheima.dto.*;
import com.itheima.pojo.TbContract;
import com.itheima.service.StatisticsService;
import com.itheima.service.TbContractService;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.xml.crypto.Data;
import java.text.SimpleDateFormat;
import java.util.*;

@Slf4j
@RestController
@RequestMapping("/statistics")
public class StatisticsController implements StatisticsControllerApi {

    @Autowired
    private StatisticsService statisticsService;


    //1.1 客户坐标(折线图)
    @Override
    @GetMapping("/contract_xy")
    public R contractStatistics(Date startTime,Date endTime) {
        return statisticsService.contractStatistics(startTime,endTime);
    }

    //1.2 客户学科分布比例(饼图)
    @Override
    @GetMapping("/contract_subject_pie")
    public R contractSubject(Date startTime, Date endTime) {
        return statisticsService.contractBySubject(startTime,endTime);
    }

    //2.1 销售金额坐标(折线图)
    @Override
    @GetMapping("/ordersMoney_xy")
    public R ordersStatistics(Date startTime, Date endTime) {
        return statisticsService.ordersStatisticsXy(startTime,endTime);

    }

    //2.2 成交合同数量(折线图)
    @Override
    @GetMapping("/ordersContract_xy")
    public R ordersContract(Date startTime, Date endTime) {
        return statisticsService.contractByStatusXy(startTime,endTime);
    }

    //3.新增线索坐标(折线图)
    @Override
    @GetMapping("/clues_xy")
    public R cluesStatistics(Date startTime, Date endTime) {
        return statisticsService.cluesStatistics(startTime,endTime);
    }

    //3.2 线索转化率(漏斗图)
    @Override
    @GetMapping("/cluesTransfer_xy")
    public R cluesTransfer(Date startTime, Date endTime) {
        return statisticsService.cluesTransfer(startTime,endTime);
    }

    //4.1 渠道比例(饼图)
    @Override
    @GetMapping("/channel_pie")
    public R channelStatistics(Date startTime, Date endTime) {
        return statisticsService.channelStatistics(startTime,endTime);
    }

    //4.2 活动比例(饼图)
    @Override
    @GetMapping("/activity_pie")
    public R activityStatistics(Date startTime, Date endTime) {
        return statisticsService.activityStatistics(startTime,endTime);
    }

    //1.客户统计分页
    //搜索条件 时间 所属渠道 归属人 归属部门
    //回显条目 客户id 归属人姓名 学科 课程 渠道 归属人 成交时间
    @Override
    @GetMapping("/contract_statistics_page")
    public R contractStatisticsPage(ContractStatisticsDto contractStatisticsDto) {
        return statisticsService.contractStatisticsPage(contractStatisticsDto);
    }

    //2.销售统计分页
    //搜索条件 1.时间 2.所属渠道 3.归属人 4.归属部门 5.排序规则(归属渠道 归属部门 归属人)
    //回显条目 1.排行 2.归属渠道/归属部门/归属人 3.合同数量 4.成交金额
    @Override
    @GetMapping("/orders_statistics_page")
    public R ordersStatisticsPage(OrdersContractStatisticsDto ordersContractStatisticsDto) {
        return statisticsService.ordersStatisticsPage(ordersContractStatisticsDto);
    }

    //3.线索统计分页
    //搜索条件 1.时间 2.线索id 3.客户姓名 4.归属人 5.部门
    //回显条目 1.线索编号 2.手机号 3客户姓名 4.归属人部门 5.归属人 6.渠道 7.活动 8.线索状态 9.创建时间
    @Override
    @GetMapping("/clues_statistics_page")
    public R cluesStatisticsPage(ClueStatisticsDto clueStatisticsDto) {
        return statisticsService.cluesStatisticsPage(clueStatisticsDto);
    }

    //4.渠道(活动)统计分页
    //搜索条件 1.时间 2.活动编号 3.客户姓名 4.归属人 5.归属部门
    //回显条目 1.渠道 2.活动编号 3.活动名称 4.线索总数 5.转化商机数 6.转化客户数 7.成交金额 8.活动成本
    @Override
    @GetMapping("/channel_statistics_page")
    public R channelStatisticsPage(ActivityStatictisticsSouDto activityStatictisticsSouDto) {
        return statisticsService.channelStatisticsPage(activityStatictisticsSouDto);
    }


}
